package com.gylang.im.passport.controller;

import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.lang.UUID;
import com.gylang.commons.util.GResultUtils;
import com.gylang.commons.vo.BaseResultVO;
import com.gylang.im.user.query.TouristLoginDTO;
import com.gylang.user.context.constant.RoleTypeEnums;
import com.gylang.user.context.domain.UserContextDTO;
import com.gylang.user.context.util.UserContextUtils;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author gylang
 * data 2020/9/2
 * @version v0.0.1
 */
@RestController
@RequestMapping("tourist")
public class TouristController {

    @PostMapping("login")
    public BaseResultVO login(@RequestBody TouristLoginDTO loginDTO) {
        // 游客登录信息存储
        UserContextDTO userContextDTO = UserContextDTO.builder()
                .nickName(loginDTO.getEquipType())
                .uid(loginDTO.getSerialNo())
                .roleList(CollUtil.newArrayList(RoleTypeEnums.TOURIST.buildRole()))
                .rightList(CollUtil.newLinkedList())
                .build();
        // 生成accessToken 将数据存储到redis 保存用户上下文
        String accessToken = UUID.randomUUID().toString();
        UserContextUtils.pushUserContext(accessToken, userContextDTO);

        return GResultUtils.setData(accessToken);
    }

}
